from dataclasses import dataclass


@dataclass
class BanReason:
    name: str
    description: str
    min_duration: int = 1


PROGRESSIVE_BAN_DAYS = [0, 3, 10, 30, 90, 365]  # in case of 0 it takes "min_duration" from ban reason

TEMPORARY_BAN_REASONS = {
    "flame": BanReason(
        name="Профилактический бан за срач",
        description="Кажется пора закрыть интернет и потрогать траву. "
                    "В ценностях Клуба не просто так сказано про лёгкость, открытость и уважение к другим. "
                    "Здесь не место для флеймов, срачей и пассивной агрессии. Мы за конструктивный диалог.",
        min_duration=1
    ),
    "useless": BanReason(
        name="Бесполезные негативные комментарии",
        description="В правилах Клуба сказано, что мы здесь не любим бесполезные негативные комментарии, "
                    "которые не добавляют ничего нового дискуссии, а лишь транслируют хейтспич и провоцируют срач. "
                    "Даём вам время перечитать их еще раз и пересмотреть своё поведение в будущем.",
        min_duration=2
    ),
    "aggression": BanReason(
        name="Агрессия и хейт",
        description="Клуб — не твиттер, мы здесь не приемлем здесь агрессивного общения, троллинга "
                    "и пассивной агрессии. Рекомендуем перечитать ценности Клуба еще раз. "
                    "При повторных банах дни будут прогрессивно увеличиваться.",
        min_duration=5
    ),
    "insult": BanReason(
        name="Оскорбление",
        description="Вместо конструктивного диалога вы решили перейти на личности и оскорблять собеседника. "
                    "У нас так не принято, даже если «ну он первый начал».",
        min_duration=7
    ),
    "spam": BanReason(
        name="Спам",
        description="Однотипные посты, агрессивная самореклама и попытки обойти модерацию — "
                    "не лучший способ привлечь к себе внимание. Передохните и подумайте.",
        min_duration=2
    ),
    "disrespect": BanReason(
        name="Неуважение к Клубу или модераторам",
        description="Если вам так не нравится Клуб и те, кто его поддерживает, то возможно вам стоит найти "
                    "другую площадку, которая даст вашему креативу раскрыться? В интернете еще много сообществ.",
        min_duration=5
    ),
}

PERMANENT_BAN_REASONS = {
    "vibe": BanReason(
        name="Не сошлись по вайбу",
        description="К сожалению, ваше поведение, манера общения или действия не соответствуют общей атмосфере "
                    "и ценностям нашего сообщества. Мы стремимся поддерживать дружелюбную, открытую и конструктивную "
                    "обстановку, в котором людям будет комфортно делиться личным опытом и вести обсуждения без "
                    "душнил и троллей из внешнего интернета. Потому мы приняли решение с вами проститься. "
                    "Спасибо за время, но вам не сюда.",
    ),
    "complaints": BanReason(
        name="Многочисленные жалобы соклубней",
        description="Мы получили критически большое количество жалоб от других других участников на ваше "
                    "поведение или действия. Модераторы проверили ваш профиль и приняли решение попрощаться с вами. "
                    "Польза от вашего пребывания в Клубе не покрывает тот негатив, который вы сюда приносите. "
                    "Спасибо за время, но нам не по пути."
    ),
    "multiple_violations": BanReason(
        name="Повторяющиеся нарушения правил",
        description="Вы неоднократно нарушали правила нашего сообщества, несмотря на наши предупреждения и просьбы. "
                    "Модераторы проверили ваш профиль и приняли решение попрощаться с вами. "
                    "Ваша полезность для Клуба не покрывает те проблемы, которые исходят от вас. "
                    "Спасибо за время, но нам не по пути."
    ),
    "excitement": BanReason(
        name="Недостаточная восторженность",
        description="Вам явно не нравится Клуб, а Клубу явно не нравитесь вы. "
                    "Матч не состоялся, но штош, так бывает. "
                    "Мы не хотим, чтобы вы страдали от пребывания в нашем Клубе, так что давайте просто расстанемся."
    ),
}

PERMANENT_BAN_DAYS = 9999
